package com.jwsoft.manager.core.integration;

import com.bifang.assistant.common.vo.BaseVO;
import com.github.pagehelper.PageInfo;
import com.jwsoft.manager.common.vo.addressParse.AddressInfo;
import com.jwsoft.manager.common.vo.eduAddressTreeInitial.EduAddressTreeInitialVO;
import com.jwsoft.manager.common.vo.eduAddressTreeInitial.EduAddressTreeInitialKeyVO;
import com.jwsoft.manager.common.vo.eduAddressTreeInitial.EduAddressTreeInitialQueryVO;
import com.jwsoft.manager.core.dao.model.EduAddress;

/**
 * 初始地址树表业务本地接口
 *
 * @author zhiyuan
 * @since 2024-01-09
 */
public interface EduAddressTreeInitialIntegration {
    /** 分页查询 */
    PageInfo<EduAddressTreeInitialVO> getList(EduAddressTreeInitialQueryVO vo);
    /** 根据主键查询详情 */
    EduAddressTreeInitialVO getById(EduAddressTreeInitialKeyVO vo);
    /** 保存前统一校验*/
    void checkSave(EduAddressTreeInitialVO vo);
    /** 新增 */
    EduAddressTreeInitialVO add(EduAddressTreeInitialVO vo);
    /** 修改 */
    EduAddressTreeInitialVO edit(EduAddressTreeInitialVO vo);
    /** 根据主键删除 */
    void del(EduAddressTreeInitialKeyVO vo);

    /**
     * 初始地址树生成并初始化学区
     * @param vo
     */
    void addressTreeCreate(EduAddressTreeInitialQueryVO vo);

    /**
     * 解析地址为树节点，不初始化学区
     * @param vo
     */
    void parseAddressTree(EduAddressTreeInitialQueryVO vo);

    /**
     * 单条地址解析
     * @param eduAddress
     * @param initialSchoolFlag
     */
    void parseAddressTree(EduAddress eduAddress, Boolean initialSchoolFlag);

    /**
     * 将解析的地址信息，保存到树节点中
     * @param addressInfo
     * @param eduAddress
     * @param initialSchoolFlag
     */
    void saveTreeNodeByAddressInfo(AddressInfo addressInfo, EduAddress eduAddress, Boolean initialSchoolFlag);

    /**
     * 清除地址解析锁缓存
     * @param vo
     */
    void clearCache(BaseVO vo);
}
